package com.springmvc.netty.action;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import com.corundumstudio.socketio.AckRequest;
import com.corundumstudio.socketio.BroadcastOperations;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.SocketIONamespace;
import com.corundumstudio.socketio.SocketIOServer;
import com.springmvc.netty.command.Command;
import com.springmvc.netty.core.ActionMap;
import com.springmvc.netty.core.NettyController;
import com.springmvc.web.majiang.entity.User;
import com.springmvc.web.majiang.service.IUserService;

@NettyController()
public class TestAction extends BaseAction {

	@Autowired
	private IUserService userService;

	@ActionMap(Command.test)
	public void login2(SocketIOServer server, SocketIOClient client, HashMap<String, String> data,
			AckRequest ackRequest) {

		client.joinRoom("1");//加入到指定房间。
		client.joinRoom("2");//加入到指定房间。
		Collection<SocketIOClient> cc = server.getAllClients();// 返回默认名称空间中的所有客户端实例。

		BroadcastOperations ss = server.getBroadcastOperations();// 返回默认名称空间的所有实例组成的广播对象。

		BroadcastOperations room = server.getRoomOperations("1");// 返回所有命名空间中指定房间的广播对象，如果命名空间只有一个，该方法到可以大胆使用。

		SocketIOClient c = server.getClient(client.getSessionId());// 返回默认名称空间的指定客户端。
		server.getNamespace("1");// 返回指定名称的命名空间。

		System.err.println(data);
		User user = this.userService.selectById(1L);
		System.out.println(String.format("用户昵称:%s;密码%d;传人内容%s", user.getUsername(), user.getId(), data));
		//		ctx.channel().writeAndFlush(new TextWebSocketFrame(user.getUsername()));

		SocketIONamespace socketIONamespace = client.getNamespace();
		System.err.println(socketIONamespace.getName());
		System.err.println(client.getAllRooms().size());
		System.err.println(client.getAllRooms());//返回当前客户端所在的room名称列表。
		client.joinRoom("1");//加入到指定房间。
		System.err.println(client.getAllRooms());
		client.leaveRoom("1");//从指定房间离开。
		System.err.println(client.getAllRooms());
		System.err.println(client.getSessionId());//方法，返回由UUID生成的唯一标识。

		Map<String, String> data1 = new HashMap<String, String>();
		data1.put("username", user.getUsername());
		sendEvent(Command.test, client, data1);

	}
}